/*
 * Elevator.h
 *
 *  Created on: Mar 7, 2012
 *      Author: ajeffery
 */

#ifndef ELEVATOR_H_
#define ELEVATOR_H_

#include <stdint.h>
#include "defs.h"

class Elevator {
public:
	Elevator(int lift_num);
	virtual ~Elevator();

    const int8_t getCar_num() ;
    const int8_t getCur_floor() ;
    void getCur_hall_calls(int8_t tempcalls[MAX_FLOORS]) ;
    const int8_t getDest_floor() ;
    const int8_t getDirection() ;
    void getInternal_calls(int8_t tempcalls[MAX_FLOORS]);
    const int8_t getStatus() ;

    void setCur_floor(int8_t floor);
    void cancel_hall_calls(int8_t cur_hall_calls[MAX_FLOORS]);
    void add_hall_calls(int8_t cur_hall_calls[MAX_FLOORS]);
    void setDest_floor(int8_t floor);
    void setDirection(int8_t direction);
    void addInternal_call(int8_t floor);
    void setStatus(int8_t iStatus);

    void remove_internal_call(int8_t);

private:
	int8_t car_num;
	int8_t cur_floor;
	int8_t dest_floor;
	int8_t status;
	int8_t direction;
	int8_t cur_hall_calls[MAX_FLOORS];
	int8_t internal_calls[MAX_FLOORS];
};

#endif /* ELEVATOR_H_ */
